/**
 * FileExport.java
 * Created at 2016年4月8日
 * Created by Jackie Liu
 * Copyright (C) 2016, All rights reserved.
 */
package com.huabo.excel;

import java.util.List;

import javax.servlet.http.HttpServletResponse;

/**
 * <p>ClassName: FileExport</p>
 * <p>Description: 导出文件模板接口</p>
 * <p>Author: Jackie Liu</p>
 * <p>Date: 2016年4月8日</p>
 */
public interface FileExport<T> {
	
	/**
	 * <p>Description: 导出到本地</p>
	 * @param targetPath 导出文件路径
	 */
	public void export(String targetPath);
	
	/**
	 * <p>Description: 设置表头</p>
	 * @param titles 表头数组
	 */
	public void setTitle(String[] titles);
	
	/**
	 * <p>Description: 设置数据集合</p>
	 * @param list 数据集合
	 */
	public void setList(List<T> list);
	
	/**
	 * <p>Description: 清空数据</p>
	 */
	public void clear();
	
	/**
	 * <p>Description: 获取组装数据</p>
	 * @return
	 */
	public Object export();

	/**
	 * <p>Description: 构建数据</p>
	 * @param callBack 解析方式回调对象
	 */
	public void buildFile(BuildFileCallBack<T> callBack);
	
	/**
	 * <p>Description: 拼装数据</p>
	 * @param data 需要导出的数据
	 */
	public void appendData(String data);
	
	/**
	 * <p>Description: 拼装数据</p>
	 * @param data 需要导出的数据
	 */
	public void appendData(int data);
	
	/**
	 * <p>Description: 拼装数据</p>
	 * @param data 需要导出的数据
	 */
	public void appendData(float data);
	
	/**
	 * <p>Description: 拼装数据</p>
	 * @param data 需要导出的数据
	 */
	public void appendData(double data);
	
	/**
	 * <p>Description: 拼装数据</p>
	 * @param data 需要导出的数据
	 */
	public void appendData(boolean data);
	
	/**
	 * <p>Description: 新的一行</p>
	 */
	public void newLine();
	
	/**
	 * <p>Description: 导出文件</p>
	 * @param response HttpServletResponse实例
	 * @param name 导出文件名称
	 */
	public void write(HttpServletResponse response, String name);
}
